介绍
笔者这些天一直在写一个比较复杂的React Native联系项目,也将近接近尾声了。之前也写过一个FlyOceanMovies,但是相对来说比较简单吧。所以这次挑了一个很复杂的项目又写了一个。不过本文的目的不是这个项目的总结,之后会单独写一篇文章来做总结。这篇文章是来介绍React Native热更新的。
大家都知道React Native最大的优点就是能够同时兼容Android、iOS两个平台,不过它还有一个比较明显的有点就是能够热更新。那如何实现RN的热更新呢?
市面上也有比较成熟的热更新服务MicroSoft CodePush和React Native中文网 pushy,不过很多时候公司可能要搭建自己的热更新服务器,毕竟将代码和控制器放到他人服务器上可控性等方面都不是很好。笔者研究总结了以下个比较成熟的方案。
热更新方案
全量热更新
这个热更新实现起来比较简单,省时省力。
增量热更新
实现起来比较复杂,省流量,用户体验会更好
搭建自己的codepush服务器
其实就是在自己服务器上搭建一套codepush系统,这样比较简单也省事。除了服务器地址与微软的不一样,其他的完全一样。
增量热更新(通过算法比较生成补丁)
1、服务端使用bsdiff算法将老RN包和新RN包生成一个补丁patch文件,供客户端下载。
2、客户端下载patch文件,使用将补丁patch文件和老RN包生成一个新RN包。
这个算法是通过文本进行比较支持的语言非常多
是c语言写的一个工具,比较的是二进制文件
二者比较图: